1. Technical Field
The present invention relates generally to computer networking and more particularly to the problem of keeping track of a working maximum transfer unit (MTU) value associated with a destination host.
2. Description of the Related Art
Modern telecommunications depends on networks. A network is a set of interconnected machines (network elements) that allow data to be relayed across the set of machines from a source to a destination. Networks may be classified according to the geographic area they occupy. A local area network (LAN) is usually defined as a network that is physically limited to a relatively small area, such as a building or group of buildings. A wide area network (WAN) is a general term for a network of larger size.
An internetwork, or internet, is a collection of networks interconnected by routers. Routers are network elements that relay (route) data between networks. Most WANs are internets composed of multiple interconnected LANs. Thus, the term WAN is often used to refer to an internet, while the term LAN is often used to denote a constituent network of an internet or WAN. In this document, the terms WAN and LAN are used in this “internetworking” sense, with the caveat that in a significant amount of computing and telecommunications literature the terms LAN and WAN is also used in the previously mentioned “geographical” sense. The “worldwide Internet” or simply “Internet” (uppercase), which provides the backbone for the World Wide Web, is perhaps the best known internet (lowercase), and the protocols and standards defining the Internet define the basic model for most of current networking technology. Thus, in general, technology that applies to the Internet may also find application in other networks, as well.
The Internet is divided into a number of different “autonomous systems” (ASs), each of which contains one or more routers and/or LANs under the control of a single entity, such a university or business. Routers (also sometimes referred to as “gateways” in older literature) are network elements that relay (route) data between networks. Routers are connected to other routers via physical or sometimes wireless links. Data is routed through an internetwork by being forwarded from router to router over physical links until the proper destination network is reached. To forward information properly over a network, routers maintain “routing tables,” which give the router guidance as to which link a given piece of information should be forwarded on. In actuality, both routers and non-router network elements (hosts) maintain routing tables, but routers are distinguished from other network elements by the fact that routers are programmed to forward data, while hosts are generally programmed to discard any data not addressed to that host.
Networking protocols, which define the rules for communication between network elements, are typically designed to work in layers, where each layer performs a slightly different role in data transmission. TCP/IP (Transmission Control Protocol/Internet Protocol) is a collection of protocols (called a protocol suite) that forms the basis for the Internet and many other networks. TCP/IP is typically used to transmit data across a wide area network in the form of relatively small chunks, alternatively known as packets or datagrams. TCP/IP is generally considered to follow a four-layer protocol model. The lowest layer of the TCP/IP protocol suite is referred to as the “Link Layer” and it represents the physical interface for supporting a connection to a physical network media, such as a cable or wireless link. The Network Layer, the next highest layer in the four-layer model, handles the movement of data packets around the network. Above the Network Layer is the Transport Layer, which controls the manner in which network packets are organized and used at the sending and receiving host computers themselves. The top layer of a typical TCP/IP protocol stack is the Application Layer, which represents the functionality for supporting a particular network application, such as E-mail (via Simple Mail Transfer Protocol, or “SMTP”) or World Wide Web access (via HyperText Transfer Protocol, or “HTTP”).
Internet Protocol (IP) is the primary Network Layer protocol of the TCP/IP protocol suite. There are two main versions of IP currently in use, version 4 (IPv4), which is defined in RFC 791, and version 6 (IPv6), which is defined in RFC 1883). IP allows packets of data to be sent from a numerical source address in the network to a numerical destination address specified in the packet's header. Typically, these packets are “encapsulated” in the packets of whatever Link Layer protocol is involved. This means that the IP packets are carried as data within the packets generated by a Link Layer protocol, such as Ethernet.
These numerical addresses in the TCP/IP protocol suite are therefore generally referred to as “IP addresses,” although the generic, non-IP-specific term is “network addresses.” Network addresses are different from hardware addresses, because network addresses are used to identify a network element over an entire WAN (e.g., the Internet), rather than to identify an NA among NAs on the same LAN. Thus, a given network element will have a hardware address corresponding to its NA and one or more network addresses that identify the network element over the WAN. IPv4 supports 32-bit IP addresses, while IPv6 supports 128-bit IP addresses, to accommodate the explosive growth in Internet-connected hosts.
Other network layer protocols, such as Internet Control Message Protocol version 4 (ICMPv4) (RFC 792) and Internet Group Management Protocol (IGMP) (RFC 1112) are used for sending control and error messages and for the grouping of IP addresses for multicasting of individual packets to multiple destinations in the group, respectively. As ICMPv4 was designed to be used in conjunction with IPv4, a new version of the protocol, ICMPv6 (RFC 1885), is required to be used in conjunction with IPv6.
One of the tasks typically performed by ICMP is known as “Path MTU discovery.” The term “MTU” stands for “maximum transport unit,” and it refers to the maximum allowable packet size between two nodes in an IP network. When packets are transmitted between any two linked nodes in an IP network, there is an MTU associated with that link. A typical IP packet will be routed through multiple routers (and, hence, multiple links) on its way to its destination host. Each link has an MTU value associated with it, which is typically a function of the link-layer protocol used for transport over that link (so that each IP packet can be encapsulated into a single link-layer packet, the maximum link-layer packet size will typically determine the MTU for the link). Because each link has an MTU associated with it, if the packet is to reach its intended destination, the packet must not exceed the MTU for any of the links along the path from the source host to the destination host. Hence, the minimum MTU over all of the links in a given path is referred to as the “path MTU” for that path. The sending host must generate IP packets that are no greater than the path MTU for the path used to reach the destination host.
The standard method for path MTU discovery is described in RFC 1191. Since a sending host will generally not be aware of the actual path taken by the packet to reach the destination host, what is discovered is actually the “path MTU” associated with each destination host. The path MTU for a given path is initially discovered using what might be characterized as a trial and error process using ICMP. If a router receives a packet that is larger than the MTU for the next link in the path, the router discards the packet and returns a datagram to the sending host containing the ICMP message “datagram too big,” which also contains the MTU value for the next link in the path. The sending host adjusts its packet size (i.e., its estimate of “path MTU” for the particular destination host) to accommodate the MTU value returned and tries again. Eventually, the sending host reaches a path MTU value that works for sending packets to the destination host, and the sending host caches that path MTU for future use, so that the trial-and-error process does not have to be repeated (for as long as the path MTU continues to reside in the cache, anyway).
Under this path MTU discovery mechanism, a large, frequently used host (such as a World Wide Web search engine, for example), must either cache a very large number of path MTU values or it will suffer significant performance degradation when it must repeatedly calculate path MTU values for reoccurring destination hosts. Under either of these scenarios, extensive computing resources are required (be they network bandwidth, computing time, or storage cost).
What is needed, therefore, is a more efficient way for a frequently used network host to keep track of the correct path MTU to use for particular destination hosts. The present invention provides a solution to this and other problems, and offers other advantages over previous solutions.